home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / stdio / RCS / sscanf.c,v < prev    next >
Text File  |  1991-12-02  |  6KB  |  335 lines

  1. head     1.8;
  2. branch   ;
  3. access   ;
  4. symbols  sprited:1.8.1;
  5. locks    ; strict;
  6. comment  @ * @;
  7.  
  8.  
  9. 1.8
  10. date     90.09.11.14.27.26;  author kupfer;  state Exp;
  11. branches 1.8.1.1;
  12. next     1.7;
  13.  
  14. 1.7
  15. date     88.07.28.17.18.51;  author ouster;  state Exp;
  16. branches ;
  17. next     1.6;
  18.  
  19. 1.6
  20. date     88.07.28.16.41.20;  author ouster;  state Exp;
  21. branches ;
  22. next     1.5;
  23.  
  24. 1.5
  25. date     88.07.25.14.50.32;  author ouster;  state Exp;
  26. branches ;
  27. next     1.4;
  28.  
  29. 1.4
  30. date     88.07.25.14.12.05;  author ouster;  state Exp;
  31. branches ;
  32. next     1.3;
  33.  
  34. 1.3
  35. date     88.07.21.09.37.46;  author ouster;  state Exp;
  36. branches ;
  37. next     1.2;
  38.  
  39. 1.2
  40. date     88.07.11.16.02.29;  author ouster;  state Exp;
  41. branches ;
  42. next     1.1;
  43.  
  44. 1.1
  45. date     88.06.10.16.24.01;  author ouster;  state Exp;
  46. branches ;
  47. next     ;
  48.  
  49. 1.8.1.1
  50. date     91.12.02.20.03.37;  author kupfer;  state Exp;
  51. branches ;
  52. next     ;
  53.  
  54.  
  55. desc
  56. @@
  57.  
  58.  
  59. 1.8
  60. log
  61. @Use function prototypes. Lint.
  62. @
  63. text
  64. @/* 
  65.  * sscanf.c --
  66.  *
  67.  *    Source code for the "sscanf" library procedure.
  68.  *
  69.  * Copyright 1988 Regents of the University of California
  70.  * Permission to use, copy, modify, and distribute this
  71.  * software and its documentation for any purpose and without
  72.  * fee is hereby granted, provided that the above copyright
  73.  * notice appear in all copies.  The University of California
  74.  * makes no representations about the suitability of this
  75.  * software for any purpose.  It is provided "as is" without
  76.  * express or implied warranty.
  77.  */
  78.  
  79. #ifndef lint
  80. static char rcsid[] = "$Header: /sprite/src/lib/c/stdio/RCS/sscanf.c,v 1.7 88/07/28 17:18:51 ouster Exp Locker: kupfer $ SPRITE (Berkeley)";
  81. #endif not lint
  82.  
  83. #include <stdio.h>
  84. #include <string.h>
  85. #include <varargs.h>
  86. #include <cfuncproto.h>
  87.  
  88. #ifndef lint
  89.  
  90. /* 
  91.  * Forward declarations:
  92.  */
  93. static void StringReadProc _ARGS_((FILE *stream));
  94.  
  95.  
  96. /*
  97.  *----------------------------------------------------------------------
  98.  *
  99.  * StringReadProc --
  100.  *
  101.  *    This procedure is invoked when an attempt is made to read
  102.  *    past the end of a string.  It returns an end-of-file
  103.  *    condition.
  104.  *
  105.  * Results:
  106.  *    None.
  107.  *
  108.  * Side effects:
  109.  *    The stream is marked with an end-of-file condition.
  110.  *
  111.  *----------------------------------------------------------------------
  112.  */
  113.  
  114. static void
  115. StringReadProc(stream)
  116.     register FILE *stream;
  117. {
  118.     stream->readCount = 0;
  119.     stream->flags |= STDIO_EOF;
  120. }
  121.  
  122. /*
  123.  *----------------------------------------------------------------------
  124.  *
  125.  * sscanf --
  126.  *
  127.  *    Same as scanf, except take input from a string rather than
  128.  *    an I/O stream.
  129.  *
  130.  * Results:
  131.  *    The values indicated by va_alist are modified to hold
  132.  *    information scanned from string.  The return value is the
  133.  *    number of fields successfully scanned, or EOF if the string
  134.  *    is empty.
  135.  *
  136.  * Side effects:
  137.  *    None.
  138.  *
  139.  *----------------------------------------------------------------------
  140.  */
  141.  
  142. int
  143. sscanf(va_alist)
  144.     va_dcl            /* char *string, then char *format, then any
  145.                  * number of pointers to values to be scanned
  146.                  * from string under control of format. */
  147. {
  148.     char *string;
  149.     char *format;
  150.     FILE stream;
  151.     va_list args;
  152.  
  153.     va_start(args);
  154.     string = va_arg(args, char *);
  155.     format = va_arg(args, char *);
  156.     Stdio_Setup(&stream, 1, 0, (unsigned char *)string, strlen(string),
  157.         StringReadProc, (void (*)()) 0, (int (*)()) 0, (ClientData) 0);
  158.     stream.readCount = strlen(string);
  159.     return vfscanf(&stream, format, args);
  160. }
  161. #else
  162. /* VARARGS2 */
  163. /* ARGSUSED */
  164. int
  165. sscanf(string, format)
  166.     char *string;
  167.     char *format;
  168. {
  169.     return 0;
  170. }
  171. #endif lint
  172. @
  173.  
  174.  
  175. 1.8.1.1
  176. log
  177. @Initial branch for Sprite server.
  178. @
  179. text
  180. @d17 1
  181. a17 1
  182. static char rcsid[] = "$Header: /sprite/src/lib/c/stdio/RCS/sscanf.c,v 1.8 90/09/11 14:27:26 kupfer Exp $ SPRITE (Berkeley)";
  183. @
  184.  
  185.  
  186. 1.7
  187. log
  188. @More lint.
  189. @
  190. text
  191. @d17 1
  192. a17 1
  193. static char rcsid[] = "$Header: sscanf.c,v 1.6 88/07/28 16:41:20 ouster Exp $ SPRITE (Berkeley)";
  194. d23 1
  195. d26 6
  196. d93 2
  197. a94 2
  198.     Stdio_Setup(&stream, 1, 0, string, strlen(string), StringReadProc,
  199.         (void (*)()) 0, (int (*)()) 0, (ClientData) 0);
  200. @
  201.  
  202.  
  203. 1.6
  204. log
  205. @Still cleaning stuff related to lint libraries.
  206. @
  207. text
  208. @d17 1
  209. a17 1
  210. static char rcsid[] = "$Header: sscanf.c,v 1.5 88/07/25 14:50:32 ouster Exp $ SPRITE (Berkeley)";
  211. d93 1
  212. @
  213.  
  214.  
  215. 1.5
  216. log
  217. @Lint.
  218. @
  219. text
  220. @d17 1
  221. a17 1
  222. static char rcsid[] = "$Header: sscanf.c,v 1.4 88/07/25 14:12:05 ouster Exp $ SPRITE (Berkeley)";
  223. d24 1
  224. a24 1
  225. #ifndef LINTLIB
  226. d100 1
  227. a100 1
  228. #endif LINTLIB
  229. @
  230.  
  231.  
  232. 1.4
  233. log
  234. @Generate more complete lint library information.
  235. @
  236. text
  237. @d17 1
  238. a17 1
  239. static char rcsid[] = "$Header: sscanf.c,v 1.3 88/07/21 09:37:46 ouster Exp $ SPRITE (Berkeley)";
  240. d24 2
  241. d27 15
  242. a41 1
  243.  * Forward reference to procedure defined in this file:
  244. d44 7
  245. a50 2
  246. extern void    StringReadProc();
  247.  
  248. a71 1
  249. #ifndef LINTLIB
  250. a100 26
  251.  
  252. /*
  253.  *----------------------------------------------------------------------
  254.  *
  255.  * StringReadProc --
  256.  *
  257.  *    This procedure is invoked when an attempt is made to read
  258.  *    past the end of a string.  It returns an end-of-file
  259.  *    condition.
  260.  *
  261.  * Results:
  262.  *    None.
  263.  *
  264.  * Side effects:
  265.  *    The stream is marked with an end-of-file condition.
  266.  *
  267.  *----------------------------------------------------------------------
  268.  */
  269.  
  270. static void
  271. StringReadProc(stream)
  272.     register FILE *stream;
  273. {
  274.     stream->readCount = 0;
  275.     stream->flags |= STDIO_EOF;
  276. }
  277. @
  278.  
  279.  
  280. 1.3
  281. log
  282. @Change to use vfscanf instead of _doscan.
  283. @
  284. text
  285. @d17 1
  286. a17 1
  287. static char rcsid[] = "$Header: sscanf.c,v 1.2 88/07/11 16:02:29 ouster Exp $ SPRITE (Berkeley)";
  288. d51 1
  289. a51 1
  290.     /* VARARGS0 */
  291. d71 10
  292. @
  293.  
  294.  
  295. 1.2
  296. log
  297. @If using varargs, don't have any arguments preceding the va_alist.
  298. @
  299. text
  300. @d17 1
  301. a17 1
  302. static char rcsid[] = "$Header: sscanf.c,v 1.1 88/06/10 16:24:01 ouster Exp $ SPRITE (Berkeley)";
  303. d69 1
  304. a69 1
  305.     return _doscan(format, &args, &stream);
  306. @
  307.  
  308.  
  309. 1.1
  310. log
  311. @Initial revision
  312. @
  313. text
  314. @d17 1
  315. a17 1
  316. static char rcsid[] = "$Header: atoi.c,v 1.1 88/04/28 17:20:23 ouster Exp $ SPRITE (Berkeley)";
  317. d20 1
  318. a20 1
  319. #include "stdio.h"
  320. d51 1
  321. d53 4
  322. a56 7
  323. sscanf(string, format, va_alist)
  324.     char *string;        /* Source for input characters to parse. */
  325.     char *format;        /* Contains literal text and format control
  326.                  * sequences indicating how string is to be
  327.                  * parsed.  See the manual page for details. */
  328.     va_dcl            /* Variable number of values to be formatted
  329.                  * and printed. */
  330. d58 2
  331. d63 3
  332. a68 1
  333.     va_start(args);
  334. @
  335.